Technical Field
The present invention relates generally to information processing and, in particular, to decomposing a monolithic application into microservices.
Description of the Related Art
Microservices are getting increasingly popular as a novel software architecture. In the microservice architecture, a monolithic application is decomposed into small components, also referred to as “microservices”. Each microservice communicates with other microservices usually with a Hypertext Transfer Protocol (HTTP) resource Application Programming Interface (API).
The microservice architecture enables more agile development because each microservice is independently developable and deployable. A common development style is to implement a monolithic application first, and then decompose the monolithic application into microservices.
However, it is not a trivial task to decompose a monolithic application into microservices. For example, there is a need to understand the details of the functions (services) inside the application. When splitting a monolithic application manually (e.g., designing microservices using a pen and paper), the developer may decompose a function into microservices unnecessarily, or overlook a function that should be decomposed into microservices. Additionally, there is a need to understand the function call contexts inside the application. If a developer decompose functions into multiple microservices that communicate tightly with each other, the overall performance of the application may dramatically degrade due to the inter-service communication by HTTP API.
Thus, there is a need for an improved mechanism for transforming a monolithic application into microservices.